class Robot(object):
    """机器人类"""
    # 定义 类变量，用于计数机器人人口
    population = 0

    def __init__(self, name):
        """初始化机器人名字"""
        self.name = name  # 对象变量
        print(f"初始化机器人：{self.name}")

        # 当有机器人被创建时，人口数量 +1
        Robot.population += 1  # 通过 列名 调用 类变量

    def die(self):
        print(f"{self.name}死亡了")

        # 当机器人死亡时，人口数量 -1
        # self.population -= 1  # 通过 对象 调用 类变量
        # Robot.population -= 1
        self.__class__.population -= 1  # self.__class__  引用这个对象的类

        if self.population == 0:
            print("没有机器人了")
        else:
            print(f"还有{self.population}个机器人")

    def say_hello(self):
        print(f"我的名字是：{self.name}")

    # 装饰器：将方法标记为类方法
    @classmethod  # how_many = classmethod(how_many)
    def how_many(cls):  # cls：类本身
        """打印人口数量"""
        print(f"当前拥有{cls.population}个机器人")


r1 = Robot("R1")
r1.say_hello()
r1.how_many()  # 通过 对象 调用 类方法

r2 = Robot("R2")
r2.say_hello()
Robot.how_many()  # 通过 类名 调用 类方法

r1.die()
r2.die()

Robot.how_many()
